package cn.hsa.xxx.bookData.bo.impl;

import cn.hsa.xxx.bookData.bo.BookInfoBO;
import cn.hsa.xxx.bookData.dao.BookInfoDAO;
import cn.hsa.xxx.api.dto.BookInfoDTO;
import cn.hsa.xxx.bookData.dto.BookInfoDTOConverter;
import cn.hsa.xxx.bookData.entity.BookInfoDO;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.List;


@Component
@Slf4j
public class BookInfoBOImpl implements BookInfoBO {

    @Resource
    BookInfoDAO bookInfoDAO;

    @Autowired
    BookInfoDTOConverter bookInfoDTOConverter;


    @Override
    public BookInfoDTO add(BookInfoDTO bookInfoDTO) {
        BookInfoDO bookInfoDO = bookInfoDTOConverter.convertToBookInfoDO(bookInfoDTO);
        bookInfoDAO.insert(bookInfoDO);
        return bookInfoDTOConverter.convertToBookInfoDTO(bookInfoDO);
    }

    @Override
    public BookInfoDTO get(String id) {
        BookInfoDO bookInfoDO = bookInfoDAO.selectById(id);
        log.warn("booInfoDO:{}",bookInfoDO);
        BookInfoDTO bookInfoDTO = bookInfoDTOConverter.convertToBookInfoDTO(bookInfoDO);
        /*log.info("BookInfoBOImpl:{}",bookInfoDTO.toString());*/
        return bookInfoDTO;
    }

    @Override
    public List<BookInfoDTO> getPage(int pageNo, int pageSize) {
        PageHelper.startPage(pageNo, pageSize);

        List<BookInfoDO> bookInfoDOList = bookInfoDAO.selectList(null);

//        log.debug("lists：{}", bookInfoDOList);

        PageInfo pageInfo = new PageInfo(bookInfoDOList);
        long totalRecords = pageInfo.getTotal();
        long totalPages = pageInfo.getPages();

        log.info("totalRecords:{}", totalRecords);
        log.info("totalPages{}", totalPages);

        List<BookInfoDTO> bookInfoDTOList = new ArrayList<BookInfoDTO>();
        for (BookInfoDO bookInfoDO : bookInfoDOList) {
            log.warn("bookInfoDO:{}",bookInfoDO);
            bookInfoDTOList.add(bookInfoDTOConverter.convertToBookInfoDTO(bookInfoDO));
        }

//        log.warn("bookInfoDTOList:{}",bookInfoDTOList);

        return bookInfoDTOList;
    }

    @Override
    public String update(BookInfoDTO bookInfoDTO) {
        BookInfoDO bookInfoDO = bookInfoDTOConverter.convertToBookInfoDO(bookInfoDTO);
        bookInfoDAO.updateById(bookInfoDO);
        return "更新成功";
    }
}
